package cn.wzb._01_hello;

import cn.wzb.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;

//消息接收方
public class Rev {

    public static void main(String[] args) {
        try {
            //1.创建链接
            Connection connection = ConnectionUtil.getConnection();
            //2.创建通道
            Channel channel = connection.createChannel();
            //3.声明队列
            /**
             * 声明队列，如果Rabbit中没有此队列将自动创建
             * param1:队列名称
             * param2:是否持久化
             * param3:队列是否独占此连接
             * param4:队列不再使用时是否自动删除此队列
             * param5:队列参数
             */
            channel.queueDeclare(Send.QUEUE_1107,true,false,false,null);

            //定义消费方法
            DefaultConsumer consumer = new DefaultConsumer(channel){

                @Override
                public void handleDelivery(String consumerTag,
                                           Envelope envelope,
                                           AMQP.BasicProperties properties,
                                           byte[] body) throws IOException {

                    //模拟消费故障
                    int i = 1/0;

                    System.out.println("消息的内容："+new String(body));

                    //触发手动签收
                    channel.basicAck(envelope.getDeliveryTag(),false);
                }

            };

            //接收消息
            //自动签收,MQ会把消息删除
           /* channel.basicConsume(Send.QUEUE_1107,//接收消息的队列
                                true,//自动签收
                                        consumer //消费回调方法
            );*/
            channel.basicConsume(Send.QUEUE_1107 , false,consumer);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
